import re

# findall函数: 匹配字符串中所有符合正则的内容，返回列表
mylist = re.findall(r"\d+", "我的电话号是：——10086。我妈的电话号是11000。")
print(mylist)

# finditer函数: 匹配字符串中所有符合正则的内容，返回迭代器（效率更高）
for i in re.finditer(r"\d+", "我的电话号是：——10086。我妈的电话号是11000。"):
    print(i.group())

# search函数: 匹配字符串中第一个符合正则的内容，返回match对象（只返回第一个符合正则的内容）
s = re.search(r"\d+", "我的电话号是：——10086。我妈的电话号是11000。")
print(s)
print(s.group())

# match函数: 匹配字符串中第一个符合正则的内容，返回match对象（从头开始匹配）
s = re.match(r"\d+", "10086。我妈的电话号是11000。")
print(s)
print(s.group())

# compile函数: 预加载（提前编译）正则表达式（提高效率）
obj = re.compile(r"\d+")
for i in obj.finditer("我的电话号是：——10086。我妈的电话号是11000。"):
    print(i.group())
ret = obj.findall("我的电话号是：——10086。我妈的电话号是11000。")
print(ret)
ret = obj.search("我的电话号是：——10086。我妈的电话号是11000。")
print(ret.group())


s = """
<div class='jay'><span id='1'>纳尼</span></div>
<div class='jj'><span id='2'>数学作业</span></div>
<div class='hello'><span id='3'>岳阳楼记</span></div>
<div class='ahahahah'><span id='50'>醉翁亭记</span></div>
<div class='ye'><span id='100'>太阳公公</span></div>
"""

# (?P<分组名字>正则) 可以通过分组名字提取内容
obj = re.compile(r"""<div class='.*?'><span id='(?P<id>\d+)'>(?P<name>.*?)</span></div>""",
                 flags=re.S)
result = obj.finditer(s)
for it in result:
    print(it.group('id'), it.group('name'))
